package com.gx.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gx.model.dto.common.BaseQueryDto;
import com.gx.model.pojo.TbBusinessDeploy;
import com.gx.model.vo.FlowLineVo;
import com.gx.model.vo.FlowNodeVo;
import com.gx.model.vo.FlowProcDefVo;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 流程定义操作
 * @author lpj
 */
public interface FlowDefinitionService {

    /**
     * 流程定义列表
     *
     * @return 流程定义分页列表数据
     */
    Page<FlowProcDefVo> list(BaseQueryDto queryDto);

    /**
     * 导入流程文件
     *
     * @param name     名称
     * @param category 分组
     * @param in       文件
     */
    void importFile(String name, String category, InputStream in);


    /**
     * 读取xml
     *
     * @param deployId 定义id
     * @return xml
     */
    String readXml(String deployId) throws IOException;

    /**
     * 激活或挂起流程定义
     *
     * @param deployId 流程部署ID
     */
    void updateState( String deployId);


    /**
     * 删除流程定义
     *
     * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值
     */
    void delete(String deployId);


    /**
     * 读取图片文件
     *
     * @param deployId 定义id
     * @return 图片流
     */
    InputStream readImage(String deployId);

    /**
     * 获取流程节点列表
     *
     * @param processId 流程定义id
     * @return 节点列表
     */
    List<FlowNodeVo> getNodeList(String processId);

    /**
     * 获取走线列表
     *
     * @param processId 流程定义id
     * @return 走线列表
     */
    List<FlowLineVo> getLineList(String processId);

    /**
     * 流程业务绑定
     * @param deployBusiness 信息
     */
    void bindDeployBusiness(TbBusinessDeploy deployBusiness);

    /**
     * 根据业务标识查询绑定流程信息
     * @param businessKey 业务标识
     * @return 结果
     */
    TbBusinessDeploy getDeployBusiness(String businessKey);
}
